<?php

class UsersController extends Controller
{
	public $layout='//layouts/column2';

	public function filters() {
		return array(
			'accessControl', 
			'postOnly + delete',
		);
	}

	public function accessRules()	{
		return array(
			array('allow', 'users'=>array('@')),
			array('deny', 'users'=>array('*')),
		);
	}

	public function actionView($id) {
		$this->render('view',array('model'=>$this->loadModel($id)));
	}

	public function actionCreate() {
		if(isset($_FILES['file']))
		{
			$result = array();
			$title = 'Utworzenie nowego konta w Internetowym Systemie Obsługi Laboratorium Laparoskopii';
			Yii::app()->mailer->IsHTML(true);
			Yii::app()->mailer->Subject = $title;
			$file = CUploadedFile::getInstanceByName('file');
			if($file instanceof CUploadedFile)
			{
				$fp = fopen($file->tempName, 'r');
				if($fp)
				{
					$first_time = true;
					do {
						if($first_time == true) {
							$first_time = false;
							continue;
						}
						$model = new Users;
						$model->email = $line[0];
						$model->first_name = $line[1];
						$model->second_name = $line[2];
						$model->type = $line[3];
						$newPassword = $model->generate_password(8);
						$model->password = $newPassword;
						if(Users::model()->findByAttributes(array('email' => $model->email)) === null)
						{
							if($model->validate() && $model->save()) {																
								$message = 'Dzień dobry,<br />
W systemie obsługi labolatorium laparoskopii dostepnym pod adresem hhttp://156.17.39.107:8083 zostało utworzone nowe konto.
<br />Aby móc korzystać z systemu należy się zalogować korzystając z poniższych danych:<br />
<b>Login:</b> '.$model->email.'<br />
<b>Hasło:</b> '.$newPassword . '<br /><br />Po pierwszym logowaniu, hasło najlepiej zmienić na własne w zakładkce -> \'<b>Dane użytkownika</b>\'';
								$contact_email = Yii::app()->mailer->From;
								Yii::app()->mailer->AddAddress($model->email);
								Yii::app()->mailer->Body = $this->renderPartial('/calendar/email', array('contact_email' => $contact_email, 'message' => $message, 'title' => $title), true);//$message;
								Yii::app()->mailer->Send();
								Yii::app()->mailer->ClearAddresses();
								$result[2][] = $model->email;
							} else {
								$result[0][] = $model->email;
							}
						} else {
							$result[1][] = $model->email;
						}
					}while(($line = fgetcsv($fp))!= FALSE);
					array_unique($result[0]);
					array_unique($result[1]);
					array_unique($result[2]);
					$this->render('summary',array('result'=>$result,'model'=>$model));
					Yii::app()->end();
				}
			}
		}

		$this->render('import');
	}

	public function actionEdit() {
		$model=$this->loadModel(Yii::app()->user->id);
		$model->password = '';
		$this->performAjaxValidation($model);
		if(isset($_POST['Users']))
		{
			$model->attributes=$_POST['Users'];
			if($model->save())
				$this->redirect(array('view','id'=>$model->id));
		}

		$this->render('_form',array(
			'model'=>$model,
		));
	}
	
	public function actionUpdate($id) {
		$model=$this->loadModel($id);
		$model->password = '';
		$this->performAjaxValidation($model);
		if(isset($_POST['Users']))
		{
			$model->attributes=$_POST['Users'];
			if($model->save())
				$this->redirect(array('view','id'=>$model->id));
		}

		$this->render('_form',array(
			'model'=>$model,
		));
	}

	public function actionDelete($id) {
		$this->loadModel($id)->delete();
		if(!isset($_GET['ajax']))
			$this->redirect(isset($_POST['returnUrl']) ? $_POST['returnUrl'] : array('index'));
	}

	public function actionIndex()	{
		if(isset($_POST['Users']))
		{
			$model = new Users;
			$this->performAjaxValidation($model);
			$_POST['Users']['password'] = $_POST['Users']['email'];
			$model->attributes=$_POST['Users'];
			//echo $_POST['email'];
			if(isset($_POST['Users']['email']))
			{
				$newPassword = $model->generate_password(8);
				$model->password = $newPassword;		
				if($model->save()) {
					$title = 'Utworzenie nowego konta w Internetowym Systemie Obsługi Laboratorium Laparoskopii';
					Yii::app()->mailer->IsHTML(true);
					Yii::app()->mailer->Subject = $title;
					$message = 'Dzień dobry,<br />
	W systemie obsługi labolatorium laparoskopii dostepnym pod adresem hhttp://156.17.39.107:8083 zostało utworzone nowe konto.
	<br />Aby móc korzystać z systemu należy się zalogować korzystając z poniższych danych:<br />
	<b>Login:</b> '.$model->email.'<br />
	<b>Hasło:</b> '.$newPassword . '<br /><br />Po pierwszym logowaniu, hasło najlepiej zmienić na własne w zakładkce -> \'<b>Dane użytkownika</b>\'';
					$contact_email = Yii::app()->mailer->From;
					Yii::app()->mailer->AddAddress($model->email);
					Yii::app()->mailer->Body = $this->renderPartial('/calendar/email', array('contact_email' => $contact_email, 'message' => $message, 'title' => $title), true);
					Yii::app()->mailer->Send();
					Yii::app()->mailer->ClearAddresses();
					$this->redirect(array('view','id'=>$model->id));
				}
			}
			$postModel = $model;
		} else {
			$postModel = new Users;
			$postModel->unsetAttributes();
		}
		
		$model = new Users('search');
		$model->unsetAttributes();  // clear any default values
		if(isset($_GET['Users']))
			$model->attributes = $_GET['Users'];
		
		$this->render('admin',array(
			'model'=>$model,
			'postModel' => $postModel
		));
	}

	public function loadModel($id) {
		$model=Users::model()->findByPk($id);
		if($model===null)
			throw new CHttpException(404,'The requested page does not exist.');
		return $model;
	}

	protected function performAjaxValidation($model) {
		if(isset($_POST['ajax']) && $_POST['ajax']==='users-form')
		{
			echo CActiveForm::validate($model);
			Yii::app()->end();
		}
	}
}
